%contrôle du vaisseau

\subsection{Gestion des Forces}
Chaque attracteur (planète) possède une force d'attraction et une force gravitationnelle. Les forces d'un attracteur ne sont pas activée continuellement. L'attraction se déclenche uniquement lorsque celui-ci est visée. Autrement dit au moment où le joueur quitte l'attracteur précédent pour se diriger vers le suivant. Cette attraction permet de rectifié un peu la trajectoire du joueur si celui-ci est sorti de l'orbite de l'attracteur précédent trop tôt ou trop tard. Une fois sortit de l'orbite, une "bulle" apparait, elle réprésente la force gravitationnelle.\\ Dans le cas où l'attracteur suivante a bien été visée, le vaisseau se met à tourner autour de ce dernier ce qui lui permet d'avoir de la vitesse et ainsi d'avancer.\\

\begin{figure}[!h]
	\centering
    \includegraphics[width=1\textwidth]{./screenshot.jpg}
    \caption{Screenshot du jeu}
    \label{screen}
\end{figure}

Nous avons donc deux forces principales, d'une part le vaisseau ( dans le cas où il se situe à une distance correcte) est attiré par l'attracteur, d'autre part, le vaiseau se met automatiquement en orbite une fois qu'il entre dans la "bulle".\\
Ce sont ces forces qui permettent au joueur de ne pas utiliser de carburant (aussi appellé énergie) pour effectuer le parcours. Le carburant n'est là que pour rectifier une trajectoire mal engagée.

\subsection{L'énergie}
Le joueur a, au départ du niveau, une certaine quantité d'énergie. A chaque utilisation de l'accélérateur, il consomme cette énergie. Dans une précédente version, l'énergie se restaurait après un laps de temps et la vitesse du vaisseau était limitée, mais finalement, la quantité d'énergie restante se cummule au score final et la limitation de vitesse pose encore quelques problèmes.

\subsection{Décrochage}
Une fois en orbite autour de l'attracteur, l'étape suivante est de décrocher\footnote{Touche ``SPACE''} au bon moment pour atteindre le prochain. A ce moment précis, l'attracteur actif se désactive pour libérer le vaisseau et le suivant s'active pour l'attirer. Aussi, si le joueur rate son décrochage, il peut replacer son vaisseau\footnote{Touche ``BACKSPACE''} en orbite autour du dernier attracteur qu'il a réussi à atteindre.
Pour cela, les trois pointeurs vers les attracteurs précédent, courrant, suivant sont conservés et mis à jour et \verb?shipControllerScript? est muni des fonctions suivantes : 
\begin{itemize}\item \verb?shipControllerScript.markNextTarget()?\item \verb?shipControllerScript.markPrevTarget()?\end{itemize}

A l'appel de \verb?shipControllerScript.markNextTarget()?, la fonction \verb?shipControllerScript.orientationDifference()? permet de définir le sens de rotation de l'attracteur.

Si l'angle $\varphi$ est positif, le joueur se dirige sur la gauche de l'attracteur, il tournera alors dans le sens des aiguilles d'une montre et inversement dans le cas contraire.

\begin{figure}[htbp]
\begin{center}
\includegraphics{img/rotation}
\caption{Calcul de la difference d'orientation lors du décrochage}
\label{img:rotation}
\end{center}
\end{figure}


\subsection{Retablir le vaisseau}
Dans le cas où le joueur n'est pas sortit de l'orbite au bon moment, le vaisseau va partir au loin et il est très difficile de revenir vers la planète suivante puisque le carburant est limité et que l'on dispose seulement des touches directionnelles droites et gauches pour rééquilibrer le vaisseau. Dans ce cas là, la touche return peut être utilisé. Elle permet de revenir en orbite à la planète précédente et de retenter d'atteindre la planète suivante. C'est la fonction "Reset Position".